#pragma once
#include <math.h>
#include <map>
#include <set>
#include <string>
#include <vector>
#include <algorithm>
#include <utility>
#include <limits.h>
#include <memory>
#include <stdint.h>
#include <assert.h>

typedef double      real_t;
typedef int         int_t;
typedef std::string string_t;

typedef std::vector<int_t> ivector;
typedef std::vector<ivector> iivector;
typedef std::vector<real_t> rvector;
typedef std::vector<rvector> rrvector;
typedef std::vector<string_t> svector;

#define POSITIVE_INFINITY 1.0e40

#define EPSILON_LENGTH  1.0e-10
#define EPSILON_AREA    1.0e-8

/*--- function return codes ---*/
#define ODB_ERROR	  -1
#define ODB_OK		  0


#ifndef MIN
#define MIN(a,b) (((a)<(b))?(a):(b))
#endif

#ifndef MAX
#define MAX(a,b) (((a)>(b))?(a):(b))
#endif
